/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package controladores;

import csp.AlgortimoCSP;
import csp.ArcoConsistencia;
import csp.ForwardChecking;
import csp.GeneradorProblemas;
import csp.HeuValSimple;
import csp.HeuVarSimple;
import csp.HeuristicaValor;
import csp.HeuristicaVariable;
import csp.MVR;
import csp.ProblemaAntenas;
import csp.VMR;
import interfaz.IUPrincipal;

/**
 *
 * @author Pablo
 */
public class controladorIUPrincipal {
   IUPrincipal interfaz;
   ProblemaAntenas problema ;

    public ProblemaAntenas getProblema() {
        return problema;
    }
   HeuristicaValor HeuValor=new HeuValSimple();
   HeuristicaVariable HeuVariable=new HeuVarSimple();
   AlgortimoCSP algoritmo ;

    public AlgortimoCSP getAlgoritmo() {
        return this.algoritmo;
    }
    public boolean resolver(IUPrincipal inter) {
        int hVariable;
        int hValor;
        int algoritmoSelec;
        interfaz = inter;
        int cantVar=inter.getNumVariables();
        if(cantVar !=4 && cantVar != 6 && cantVar != 8){
            cantVar=4;
        }
        problema = new ProblemaAntenas(inter.getFrecuenciasAntenas(),inter.getPotenciasAntenas(), cantVar, inter.getFrecuencia());
        hVariable=inter.getHeuVariable().getSelectedIndex();
        hValor = inter.getHeuValor().getSelectedIndex();
        
        if(hVariable == 1){
            HeuVariable = new MVR();
        } else if(hVariable == 2 ){
            HeuVariable = new HeuVarSimple();
                }
        
        if(hValor == 1){
            HeuValor = new VMR();
        } else if(hValor == 2 ){
            HeuValor = new HeuValSimple();
                }
        
       algoritmoSelec = inter.getAlgoritmo().getSelectedIndex();
       if(algoritmoSelec == 1){
           algoritmo = new ForwardChecking(HeuValor, HeuVariable);
       } else if (algoritmoSelec == 2){
           algoritmo = new ArcoConsistencia(HeuValor, HeuVariable);
       }
       
       boolean respuesta;
       respuesta = algoritmo.resolver(problema);
        System.out.println("RESPUESTA FINAL: " + respuesta );
        return respuesta;
    }
    
    
}
